package cn.dev33.satoken.three.example.json;

import cn.dev33.satoken.json.SaJsonTemplate;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;

import java.util.Objects;

/**
 * @Author: ZhangGongMing
 * @CreateTime: 2025/4/24 13:31
 * @Description: Json 转换器,覆盖默认实现.使用 hutool-json 序列化
 * @Version: 1.0
 */
public class SaJsonTemplateForHutoolJson implements SaJsonTemplate {

    /**
     * 序列化过程: 对象 -> json 字符串
     *
     * @param obj /
     * @return
     */
    @Override
    public String objectToJson(Object obj) {
        if (Objects.isNull(obj)) {
            return "";
        }
        return JSONUtil.toJsonStr(obj);
    }

    /**
     * 反序列化过程: json 字符串 -> 对象
     *
     * @param jsonStr /
     * @param type /
     * @return
     * @param <T>
     */
    @Override
    public <T> T jsonToObject(String jsonStr, Class<T> type) {
        if(SaFoxUtil.isEmpty(jsonStr)) {
            return null;
        }
        return JSONUtil.parseObj(jsonStr).toBean(type);
    }
}
